為了達到「在不同場景替換不同 Random」的目的,我們必須讓每次的抽換,所付出的開發成本最小化。要達到這目標,有一個最關鍵檔在前面的阻礙:Java 原生的 Random 類別。
應該說,我們的目的是取得亂數,至於是不是 Java 原生的 Random 物件產給我們的,我們並不在乎。那麼,在乎的人是誰?看起來應該是「把這個 System 給啟起來」的人吧!這時,OOP 的「依賴反轉」與「多型」就派上用場了。讓把我們創出來的人,丟一個「能產亂數的工具」給我。這個工具我不在乎它裡面是怎麼做的,用哪家的 Random library,這些我都不管,我只管跟它拿了亂數後去滾我的滾輪。
如此一來,我的邏輯就不會被 Random 的實作給綁死,就能達到動態抽換了。
如同前面一再強調的,這些邏輯本來就都存在,只是觸發的位置要換掉。因此,用重構的,會比重寫一份來得經濟實惠。